package code

import (
	"crypto/hmac"
	"crypto/sha1"
	"encoding/base64"
	"encoding/hex"
	"encoding/json"
	"hash"
)

//HmacSha1 签名
func HmacSha1(privateKey, data string) string {
	hm := hmac.New(func() hash.Hash {
		return sha1.New()
	}, []byte(privateKey))
	hm.Write([]byte(data))
	bs := hm.Sum(nil)
	return hex.EncodeToString(bs)
}

//Base64Decode Base64解码
func Base64Decode(s string) ([]byte, error) {
	return base64.StdEncoding.DecodeString(s)
}

//Base64Encode Base64编码
func Base64Encode(src []byte) string {
	return base64.StdEncoding.EncodeToString(src)
}

//JsonEncode 将类型编码为Json格式字符串
func JsonEncode(v interface{}) (string, error) {
	b, err := json.Marshal(v)
	return string(b), err
}

//JsonDecode 将Json格式字符串转换为指定类型
//data Json数据
//v 指定类型的指针
func JsonDecode(s string, v interface{}) error {
	return json.Unmarshal([]byte(s), v)
}
